/*
 * JVM_OpcodeStore.c
 *
 *  Created on: 04.01.2011
 *      Author: Tavin
 */

#include "JVM_Opcode.h"
#include "JVM_OpcodeStore.h"
#include "JVM_StatusCodes.h"
#include "JVM_Handle.h"


/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_astore								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_astore()
{
	uint8_t index;

	JVM_HandleNumber_t myHandle;

	index=JVM_Opcode_getCodeByte();
	myHandle=JVM_Opcode_popReference();

	// NEW return code for EXCEPTION -> NULL
	if (myHandle == 0)
		return (STCD_NULL_REFERENCE);

	JVM_Opcode_setReferenceVar(index,myHandle);
	return(STCD_OK);
}



/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_astore_0								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.6			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_astore_0()
{
	JVM_HandleNumber_t myHandle;

	myHandle=JVM_Opcode_popReference();

	// NEW return code for EXCEPTION -> NULL
	if (myHandle == 0)
		return (STCD_NULL_REFERENCE);

	JVM_Opcode_setReferenceVar(0,myHandle);
	return(STCD_OK);
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_astore_1								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.6			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_astore_1()
{
	JVM_HandleNumber_t myHandle;


	myHandle=JVM_Opcode_popReference();

	// NEW return code for EXCEPTION -> NULL
	if (myHandle == 0)
		return (STCD_NULL_REFERENCE);

	JVM_Opcode_setReferenceVar(1,myHandle);
	return(STCD_OK);
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_astore_1								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.6			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_astore_2()
{
	JVM_HandleNumber_t myHandle;


	myHandle=JVM_Opcode_popReference();

	// NEW return code for EXCEPTION -> NULL
	if (myHandle == 0)
		return (STCD_NULL_REFERENCE);

	JVM_Opcode_setReferenceVar(2,myHandle);
	return(STCD_OK);
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_astore_3								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.6			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_astore_3()
{
	JVM_HandleNumber_t myHandle;

	myHandle=JVM_Opcode_popReference();

	// NEW return code for EXCEPTION -> NULL
	if (myHandle == 0)
		return (STCD_NULL_REFERENCE);

	JVM_Opcode_setReferenceVar(3,myHandle);
	return(STCD_OK);
}


/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_istore								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_istore()
{
	uint32_t tmpValue;
	uint8_t index;

	index=JVM_Opcode_getCodeByte();
	tmpValue=JVM_Opcode_popIntValue();
	JVM_Opcode_setIntVar(index,tmpValue);
	return(STCD_OK);
}


/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_istore0								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_istore_0()
{
	uint32_t tmpValue;

	tmpValue=JVM_Opcode_popIntValue();
	JVM_Opcode_setIntVar(0,tmpValue);
	return(STCD_OK);
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_istore2								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_istore_1()
{
	uint32_t tmpValue;

	tmpValue=JVM_Opcode_popIntValue();
	JVM_Opcode_setIntVar(1,tmpValue);
	return(STCD_OK);
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_istore2								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_istore_2()
{
	uint32_t tmpValue;

	tmpValue=JVM_Opcode_popIntValue();
	JVM_Opcode_setIntVar(2,tmpValue);
	return(STCD_OK);
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_istore2								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_istore_3()
{
	uint32_t tmpValue;

	tmpValue=JVM_Opcode_popIntValue();
	JVM_Opcode_setIntVar(3,tmpValue);
	return(STCD_OK);
}

/********************************** Long ***********************************/


/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_lstore								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_lstore()
{
	uint64_t tmpValue;
	uint8_t index;

	index=JVM_Opcode_getCodeByte();
	tmpValue=JVM_Opcode_popLongValue();
	JVM_Opcode_setLongVar(index,tmpValue);
	return(STCD_OK);
}


/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_lstore0								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_lstore_0()
{
	uint64_t tmpValue;

	tmpValue=JVM_Opcode_popLongValue();
	JVM_Opcode_setLongVar(0,tmpValue);
	return(STCD_OK);
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_lstore2								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_lstore_1()
{
	uint64_t tmpValue;

	tmpValue=JVM_Opcode_popLongValue();
	JVM_Opcode_setLongVar(1,tmpValue);
	return(STCD_OK);
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_lstore2								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_lstore_2()
{
	uint64_t tmpValue;

	tmpValue=JVM_Opcode_popLongValue();
	JVM_Opcode_setLongVar(2,tmpValue);
	return(STCD_OK);
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_lstore2								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_lstore_3()
{
	uint64_t tmpValue;

	tmpValue=JVM_Opcode_popLongValue();
	JVM_Opcode_setLongVar(3,tmpValue);
	return(STCD_OK);
}


/********************************* Float *********************************/

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_fstore								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_fstore()
{
	return(JVM_cmd_istore());
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_fstore_0								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_fstore_0()
{
	return(JVM_cmd_istore_0());
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_fstore_1								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_fstore_1()
{
	return(JVM_cmd_istore_1());
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_fstore_2								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_fstore_2()
{
	return(JVM_cmd_istore_2());
}
/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_fstore_3								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_fstore_3()
{
	return(JVM_cmd_istore_3());
}


/********************************* Float *********************************/

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_dstore								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_dstore()
{
	return(JVM_cmd_lstore());
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_dstore_0								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_dstore_0()
{
	return(JVM_cmd_lstore_0());
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_dstore_1								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_dstore_1()
{
	return(JVM_cmd_lstore_1());
}

/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_dstore_2								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_dstore_2()
{
	return(JVM_cmd_lstore_2());
}
/****************************************************************************************/
/*																						*/
/*	Function : JVM_cmd_dstore_3								Author : OG					*/
/*																						*/
/*	Description : 								   										*/
/*																						*/
/*	Version : 1.0					Date :2011.1.4			Status : Working   			*/
/*																						*/
/****************************************************************************************/

uint16_t JVM_cmd_dstore_3()
{
	return(JVM_cmd_lstore_3());
}
